package Day014_Lambda表达式_Stream流.demo05_收集Stream结果;

import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * @author zhangyan
 * @date 2020/5/5 14:55
 */
/*
    1.收集到集合中
                Stream流提供 collect 方法，其参数需要一个 java.util.stream.Collector<T,A,R> 接口对象来指定收集到集合中

                java.util.stream.Collectors 类提供一些方法，可以作为 Collector 接口的实例:
                public static <T> Collector<T, ?, List<T>> toList() ：转换为 List 集合
                public static <T> Collector<T, ?, Set<T>> toSet() ：转换为 Set 集合
    2.收集到数组中
                Object[] toArray();
 */
public class Test {
    public static void main(String[] args) {
        Stream<String> stream1 = Stream.of("谢霆锋", "王宝强", "贾乃亮");

        //1.把stream1中的元素 收集到List集合中
        //Collector<Object, ?, List<Object>> collector = Collectors.toList();
        //List<Object> list = stream1.collect(collector);

        List<String> list = stream1.collect(Collectors.toList());
        System.out.println(list);

        //2.把stream1中的元素 收集到List集合中
        //Collector<Object, ?, Set<Object>> collector = Collectors.toSet();
        //Set<Object> set = stream1.collect(collector);

        Set<String> set = stream1.collect(Collectors.toSet());
        System.out.println(set);

        //3.把stream1中的元素 收集到数组集合中
        Object[] arr = stream1.toArray();
        System.out.println(Arrays.toString(arr));
    }
}
